package com.atguigu.gulimall.order.web;

import com.atguigu.gulimall.order.service.OrderService;
import com.atguigu.gulimall.order.vo.OrderConfirmVo;
import com.atguigu.gulimall.order.vo.OrderSubmitVo;
import com.atguigu.gulimall.order.vo.SubmitOrderResponseVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import javax.servlet.http.HttpServletRequest;
import java.util.concurrent.ExecutionException;

@Controller
public class OrderWebController {
    @Autowired
    private OrderService orderService;
    @GetMapping("/toTrade")//  这个是  购物车页面 跳转到  订单确认页   的 中间方法.
    public String totrade(Model model, HttpServletRequest request) throws ExecutionException, InterruptedException {

      OrderConfirmVo orderConfirmVo= orderService.confirmOrder2();

        model.addAttribute("orderConfirmData",orderConfirmVo);  //放在作用域中,


        return  "confirm";  //  这个是 订单结算页面,也是 订单确认页面  是核对订单信息页面,在这个页面正式提交订单

    }


    //  下单方法 controller层
    @PostMapping("/submitOrder")   //在  支付 确认页, 点击  提交订单   按钮 ,就会触发这个方法   上个页面是 在 购物车页面,截止到现在,还没有个数据库中添加数据
    public String submitOrder(OrderSubmitVo vo, Model model, RedirectAttributes ra){


        SubmitOrderResponseVo   responseVo=orderService.submitOrder(vo);  //  调用service层的下单方法
        //SubmitOrderResponseVo  这个返回值 的意思是:    里面有一个属性code,代表有没有下单成功.



        if(responseVo.getCode()==0){  //code=0,代表下单成功-

            model.addAttribute("submitOrderResp",responseVo);


         return  "pay";   //下单成功  , 来到   支付选择页
        }else{
            String  msg="下单失败";
            switch (responseVo.getCode()){
                case 1: msg +=  "订单信息过期,请刷新再次提交";break;
                case 2: msg+= "订单商品价格发生变化,请确认后再次提交";break;
                case 3:msg+= "库存锁定失败,商品库存不足 ";break;
            }

            ra.addFlashAttribute("msg",msg   );
            return   "redirect:http://order.gulimall.com/toTrade";   // 如果下单失败,重新回到订单确认页
        }


    }


}
